Métodos de Predictivos (Clasificación o Aprendizaje-Supervisado)
Se necesita cargar las siguientes librerías
Muestra la distribución de la variable a predecir
equilibrio.variable.predecir<-function(datos,variable.predecir,ylab="Cantidad de individuos",xlab = "",
main=paste("Distribución de la variable",variable.predecir),
col = NA) {
gg_color <- function (n) {
hues <- seq(15, 375, length = n + 1)
hcl(h = hues, l = 65, c = 100)[1:n]
}
if(missing(variable.predecir) | !(variable.predecir %in% colnames(datos))){
stop("variable.predecir tiene que ser ingresada y ser un nombre de columna", call. = FALSE )
}
if(is.character(datos[,variable.predecir]) | is.factor(datos[,variable.predecir])){
if(length(col) == 0 || is.na(col)){
col <- gg_color(length(unique(datos[,variable.predecir])))
}else{
col <- rep(col,length(unique(datos[,variable.predecir])))
}
ggplot(data = datos, mapping = aes_string(x = variable.predecir, fill = variable.predecir)) +
geom_bar() +
scale_fill_manual(values = col, name = variable.predecir) +
labs(x = xlab, y = ylab, title = main) +
theme_minimal() +
theme(legend.position = "bottom")
}else{
stop("La variable a predecir tienen que ser de tipo factor o character", call. = FALSE )
}
}Muestra la distribución de una variable numérica según la variable a predecir
poder.predictivo.numerica<-function(datos,variable.predecir,variable.comparar,ylab="",xlab="",
main=paste("Densidad de la variable",variable.comparar,'según',variable.predecir),
col=NA){
gg_color <- function (n) {
hues <- seq(15, 375, length = n + 1)
hcl(h = hues, l = 65, c = 100)[1:n]
}
if(missing(variable.predecir) | !(variable.predecir %in% colnames(datos))){
stop("variable.predecir tiene que ser ingresada y ser un nombre de columna", call. = FALSE )
}
if(missing(variable.comparar) | !(variable.comparar %in% colnames(datos)) | !is.numeric(datos[,variable.comparar])){
stop("variable.comparar tiene que ser ingresada y ser un nombre de columna numérica", call. = FALSE )
}
if(is.character(datos[,variable.predecir]) | is.factor(datos[,variable.predecir])){
if(length(col) == 0 || is.na(col)){
col <- gg_color(length(unique(datos[,variable.predecir])))
}else{
col <- rep(col,length(unique(datos[,variable.predecir])))
}
ggplot(data = datos, aes_string(variable.comparar, fill = variable.predecir)) +
geom_density(alpha = .7, color = NA) +
scale_fill_manual(values = col) +
labs(title = main , y = ylab, x = xlab ,fill = variable.predecir) +
theme_minimal() +
theme(legend.position = 'bottom',
legend.title = element_blank(),
text = element_text(size = 15))
}else{
stop("La variable a predecir tienen que ser de tipo factor o character", call. = FALSE )
}
}Muestra la distribución de una variable categórica según la variable a predecir
poder.predictivo.categorica<-function(datos,variable.predecir,variable.comparar,ylab="",xlab="",
main=paste("Densidad de la variable",variable.comparar,'según',variable.predecir),
col=NA){
gg_color <- function (n) {
hues <- seq(15, 375, length = n + 1)
hcl(h = hues, l = 65, c = 100)[1:n]
}
if(missing(variable.predecir) | !(variable.predecir %in% colnames(datos))){
stop("variable.predecir tiene que ser ingresada y ser un nombre de columna", call. = FALSE )
}
if(missing(variable.comparar) | !(variable.comparar %in% colnames(datos)) |
!(is.factor(datos[,variable.comparar]) | is.character(datos[,variable.comparar])) ){
stop("variable.comparar tiene que ser ingresada y ser un nombre de columna categórica", call. = FALSE )
}
if(is.character(datos[,variable.predecir]) | is.factor(datos[,variable.predecir])){
if(length(col) == 0 || is.na(col)){
col <- gg_color(length(unique(datos[,variable.predecir])))
}else{
col <- rep(col,length(unique(datos[,variable.predecir])))
}
datos2 <- datos %>%
dplyr::group_by_(variable.comparar, variable.predecir) %>%
dplyr::summarise(count = n())
if(variable.comparar != variable.predecir){
datos2 <- datos2 %>% dplyr::group_by_(variable.comparar)
}
datos2 <- datos2 %>% dplyr::mutate(prop = round(count/sum(count),4))
ggplot(data = datos2, mapping = aes_string(x = variable.comparar, y = "prop", fill = variable.predecir)) +
geom_col(position = "fill") +
geom_text(aes(label = glue("{percent(prop)} ({count})")), position = position_stack(vjust = .5), color = "white") +
scale_y_continuous(label = percent) +
labs(y = xlab, x = ylab, title = main) +
scale_fill_manual(values = col, name = variable.predecir) +
theme(legend.position = "bottom")+
coord_flip()
}else{
stop("La variable a predecir tienen que ser de tipo factor o character", call. = FALSE )
}
}Índices para matrices NxN
indices.general <- function(MC) {
precision.global <- sum(diag(MC))/sum(MC)
error.global <- 1 - precision.global
precision.categoria <- diag(MC)/rowSums(MC)
res <- list(matriz.confusion = MC, precision.global = precision.global, error.global = error.global,
precision.categoria = precision.categoria)
names(res) <- c("Matriz de Confusión", "Precisión Global", "Error Global",
"Precisión por categoría")
return(res)
}'data.frame': 150 obs. of 5 variables:
$ s.largo: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ s.ancho: num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ p.largo: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ p.ancho: num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ tipo : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Vamos a generar al azar una tabla de testing de tamaño 50 y una tabla de aprendizaje de tamaño 100.
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 setosa (0.34000000 0.33000000 0.33000000)
2) p.largo< 2.6 34 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 66 33 versicolor (0.00000000 0.50000000 0.50000000)
6) p.ancho< 1.75 36 3 versicolor (0.00000000 0.91666667 0.08333333) *
7) p.ancho>=1.75 30 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
# Type="class" hace que el modelo prediga clases y no probabilidades
prediccion <- predict(modelo, ttesting, type ='class')
prediccion 119 72 20 114 147 68
virginica versicolor setosa virginica virginica versicolor
83 63 40 144 108 138
versicolor versicolor setosa virginica virginica virginica
64 113 100 26 99 145
versicolor virginica versicolor setosa versicolor virginica
115 22 50 84 11 97
virginica setosa setosa versicolor setosa versicolor
2 7 47 117 17 35
setosa setosa setosa virginica setosa setosa
27 130 91 85 24 69
setosa versicolor versicolor versicolor setosa versicolor
107 140 143 71 45 3
versicolor virginica virginica virginica setosa setosa
74 112 96 92 8 109
versicolor virginica versicolor versicolor setosa virginica
106 66
virginica versicolor
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediccion
setosa versicolor virginica
setosa 16 0 0
versicolor 0 16 1
virginica 0 2 15
Índices de calidad de la predicción
$`Matriz de Confusión`
prediccion
setosa versicolor virginica
setosa 16 0 0
versicolor 0 16 1
virginica 0 2 15
$`Precisión Global`
[1] 0.94
$`Error Global`
[1] 0.06
$`Precisión por categoría`
setosa versicolor virginica
1.0000000 0.9411765 0.8823529
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 setosa (0.34000000 0.33000000 0.33000000)
2) p.largo< 2.6 34 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 66 33 versicolor (0.00000000 0.50000000 0.50000000)
6) p.ancho< 1.75 36 3 versicolor (0.00000000 0.91666667 0.08333333) *
7) p.ancho>=1.75 30 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
[1] virginica versicolor setosa virginica virginica versicolor
[7] versicolor versicolor setosa virginica virginica virginica
[13] versicolor virginica versicolor setosa versicolor virginica
[19] virginica setosa setosa versicolor setosa versicolor
[25] setosa setosa setosa virginica setosa setosa
[31] setosa versicolor versicolor versicolor setosa versicolor
[37] versicolor virginica virginica virginica setosa setosa
[43] versicolor virginica versicolor versicolor setosa virginica
[49] virginica versicolor
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediction
real setosa versicolor virginica
setosa 16 0 0
versicolor 0 16 1
virginica 0 2 15
Índices de calidad de la predicción
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 16 0 0
versicolor 0 16 1
virginica 0 2 15
Overall Accuracy: 0.9400
Overall Error: 0.0600
Category Accuracy:
setosa versicolor virginica
1.000000 0.941176 0.882353
Podemos omitir crear la matriz de confusión
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 16 0 0
versicolor 0 16 1
virginica 0 2 15
Overall Accuracy: 0.9400
Overall Error: 0.0600
Category Accuracy:
setosa versicolor virginica
1.000000 0.941176 0.882353
Generar el árbol cambiando la cantidad mínima de individuos en los nodos hoja (terminales).
Es decir, modificando el parámetro minsplit = 20
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 setosa (0.34000000 0.33000000 0.33000000)
2) p.largo< 2.6 34 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 66 33 versicolor (0.00000000 0.50000000 0.50000000)
6) p.ancho< 1.75 36 3 versicolor (0.00000000 0.91666667 0.08333333)
12) p.largo< 4.95 32 0 versicolor (0.00000000 1.00000000 0.00000000) *
13) p.largo>=4.95 4 1 virginica (0.00000000 0.25000000 0.75000000)
26) s.largo>=6.5 1 0 versicolor (0.00000000 1.00000000 0.00000000) *
27) s.largo< 6.5 3 0 virginica (0.00000000 0.00000000 1.00000000) *
7) p.ancho>=1.75 30 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
# Type="class" hace que el modelo prediga clases y no probabilidades
prediccion <- predict(modelo, ttesting, type ='class')
prediccion 119 72 20 114 147 68
virginica versicolor setosa virginica virginica versicolor
83 63 40 144 108 138
versicolor versicolor setosa virginica virginica virginica
64 113 100 26 99 145
versicolor virginica versicolor setosa versicolor virginica
115 22 50 84 11 97
virginica setosa setosa virginica setosa versicolor
2 7 47 117 17 35
setosa setosa setosa virginica setosa setosa
27 130 91 85 24 69
setosa versicolor versicolor versicolor setosa versicolor
107 140 143 71 45 3
versicolor virginica virginica virginica setosa setosa
74 112 96 92 8 109
versicolor virginica versicolor versicolor setosa virginica
106 66
virginica versicolor
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediccion
setosa versicolor virginica
setosa 16 0 0
versicolor 0 15 2
virginica 0 2 15
Índices de calidad de la predicción
$`Matriz de Confusión`
prediccion
setosa versicolor virginica
setosa 16 0 0
versicolor 0 15 2
virginica 0 2 15
$`Precisión Global`
[1] 0.92
$`Error Global`
[1] 0.08
$`Precisión por categoría`
setosa versicolor virginica
1.0000000 0.8823529 0.8823529
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 setosa (0.34000000 0.33000000 0.33000000)
2) p.largo< 2.6 34 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 66 33 versicolor (0.00000000 0.50000000 0.50000000)
6) p.ancho< 1.75 36 3 versicolor (0.00000000 0.91666667 0.08333333)
12) p.largo< 4.95 32 0 versicolor (0.00000000 1.00000000 0.00000000) *
13) p.largo>=4.95 4 1 virginica (0.00000000 0.25000000 0.75000000)
26) s.largo>=6.5 1 0 versicolor (0.00000000 1.00000000 0.00000000) *
27) s.largo< 6.5 3 0 virginica (0.00000000 0.00000000 1.00000000) *
7) p.ancho>=1.75 30 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
[1] virginica versicolor setosa virginica virginica versicolor
[7] versicolor versicolor setosa virginica virginica virginica
[13] versicolor virginica versicolor setosa versicolor virginica
[19] virginica setosa setosa virginica setosa versicolor
[25] setosa setosa setosa virginica setosa setosa
[31] setosa versicolor versicolor versicolor setosa versicolor
[37] versicolor virginica virginica virginica setosa setosa
[43] versicolor virginica versicolor versicolor setosa virginica
[49] virginica versicolor
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediction
real setosa versicolor virginica
setosa 16 0 0
versicolor 0 15 2
virginica 0 2 15
Índices de calidad de la predicción
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 16 0 0
versicolor 0 15 2
virginica 0 2 15
Overall Accuracy: 0.9200
Overall Error: 0.0800
Category Accuracy:
setosa versicolor virginica
1.000000 0.882353 0.882353
Podemos omitir crear la matriz de confusión
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 16 0 0
versicolor 0 15 2
virginica 0 2 15
Overall Accuracy: 0.9200
Overall Error: 0.0800
Category Accuracy:
setosa versicolor virginica
1.000000 0.882353 0.882353
Utilizando los datos que previamente cargamos
Podemos visualizar la distribución de las variables numéricas según la variable a predecir.
Utilizando los mismo datos para prueba (ttesting) y aprendizaje (taprendizaje) que creamos anteriormente.
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 setosa (0.34000000 0.33000000 0.33000000)
2) p.largo< 2.6 34 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 66 33 versicolor (0.00000000 0.50000000 0.50000000)
6) p.ancho< 1.75 36 3 versicolor (0.00000000 0.91666667 0.08333333)
12) p.largo< 4.95 32 0 versicolor (0.00000000 1.00000000 0.00000000) *
13) p.largo>=4.95 4 1 virginica (0.00000000 0.25000000 0.75000000)
26) p.ancho>=1.6 1 0 versicolor (0.00000000 1.00000000 0.00000000) *
27) p.ancho< 1.6 3 0 virginica (0.00000000 0.00000000 1.00000000) *
7) p.ancho>=1.75 30 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
# Type="class" hace que el modelo prediga clases y no probabilidades
prediccion <- predict(modelo, ttesting, type ='class')
prediccion 119 72 20 114 147 68
virginica versicolor setosa virginica virginica versicolor
83 63 40 144 108 138
versicolor versicolor setosa virginica virginica virginica
64 113 100 26 99 145
versicolor virginica versicolor setosa versicolor virginica
115 22 50 84 11 97
virginica setosa setosa versicolor setosa versicolor
2 7 47 117 17 35
setosa setosa setosa virginica setosa setosa
27 130 91 85 24 69
setosa versicolor versicolor versicolor setosa versicolor
107 140 143 71 45 3
versicolor virginica virginica virginica setosa setosa
74 112 96 92 8 109
versicolor virginica versicolor versicolor setosa virginica
106 66
virginica versicolor
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediccion
setosa versicolor virginica
setosa 16 0 0
versicolor 0 16 1
virginica 0 2 15
Índices de calidad de la predicción
$`Matriz de Confusión`
prediccion
setosa versicolor virginica
setosa 16 0 0
versicolor 0 16 1
virginica 0 2 15
$`Precisión Global`
[1] 0.94
$`Error Global`
[1] 0.06
$`Precisión por categoría`
setosa versicolor virginica
1.0000000 0.9411765 0.8823529
Se cargan las librerías
Se genera el modelo
n= 100
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 100 66 setosa (0.34000000 0.33000000 0.33000000)
2) p.largo< 2.6 34 0 setosa (1.00000000 0.00000000 0.00000000) *
3) p.largo>=2.6 66 33 versicolor (0.00000000 0.50000000 0.50000000)
6) p.ancho< 1.75 36 3 versicolor (0.00000000 0.91666667 0.08333333)
12) p.largo< 4.95 32 0 versicolor (0.00000000 1.00000000 0.00000000) *
13) p.largo>=4.95 4 1 virginica (0.00000000 0.25000000 0.75000000)
26) p.ancho>=1.6 1 0 versicolor (0.00000000 1.00000000 0.00000000) *
27) p.ancho< 1.6 3 0 virginica (0.00000000 0.00000000 1.00000000) *
7) p.ancho>=1.75 30 0 virginica (0.00000000 0.00000000 1.00000000) *
Se genera la predicción
[1] virginica versicolor setosa virginica virginica versicolor
[7] versicolor versicolor setosa virginica virginica virginica
[13] versicolor virginica versicolor setosa versicolor virginica
[19] virginica setosa setosa versicolor setosa versicolor
[25] setosa setosa setosa virginica setosa setosa
[31] setosa versicolor versicolor versicolor setosa versicolor
[37] versicolor virginica virginica virginica setosa setosa
[43] versicolor virginica versicolor versicolor setosa virginica
[49] virginica versicolor
Levels: setosa versicolor virginica
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediction
real setosa versicolor virginica
setosa 16 0 0
versicolor 0 16 1
virginica 0 2 15
Índices de calidad de la predicción
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 16 0 0
versicolor 0 16 1
virginica 0 2 15
Overall Accuracy: 0.9400
Overall Error: 0.0600
Category Accuracy:
setosa versicolor virginica
1.000000 0.941176 0.882353
Podemos omitir crear la matriz de confusión
Confusion Matrix:
prediction
real setosa versicolor virginica
setosa 16 0 0
versicolor 0 16 1
virginica 0 2 15
Overall Accuracy: 0.9400
Overall Error: 0.0600
Category Accuracy:
setosa versicolor virginica
1.000000 0.941176 0.882353
setwd("~/Desktop/Datos/")
datos<-read.csv("MuestraCredito5000V2.csv",sep = ";",header=T)
# Recodifica las variables como categóricas ordinales
datos$IngresoNeto <- factor(datos$IngresoNeto, ordered = TRUE)
datos$CoefCreditoAvaluo <- factor(datos$CoefCreditoAvaluo, ordered = TRUE)'data.frame': 5000 obs. of 6 variables:
$ MontoCredito : int 14327 111404 21128 15426 10351 27060 243369 16300 18319 107037 ...
$ IngresoNeto : Ord.factor w/ 2 levels "1"<"2": 1 1 1 2 1 1 1 2 2 2 ...
$ CoefCreditoAvaluo: Ord.factor w/ 12 levels "1"<"2"<"3"<"4"<..: 1 1 1 1 1 1 1 1 1 1 ...
$ MontoCuota : Factor w/ 4 levels "Alto","Bajo",..: 4 4 4 4 4 4 4 4 4 4 ...
$ GradoAcademico : Factor w/ 2 levels "Bachiller","Licenciatura": 1 1 1 1 1 1 1 1 1 1 ...
$ BuenPagador : Factor w/ 2 levels "No","Si": 2 2 2 2 2 2 2 2 2 2 ...
Vamos a generar al azar una tabla de testing con 15% de los datos y una tabla de aprendizaje con 85%
Se cargan las librerías
Se genera el modelo
n= 4250
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 4250 602 Si (0.14164706 0.85835294)
2) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9,10,11 2132 471 Si (0.22091932 0.77908068)
4) GradoAcademico=Bachiller 415 93 No (0.77590361 0.22409639)
8) CoefCreditoAvaluo=4,5,6,7,8,9,10,11,12 322 18 No (0.94409938 0.05590062) *
9) CoefCreditoAvaluo=1,2,3 93 18 Si (0.19354839 0.80645161)
18) MontoCuota=Alto,Bajo,Medio 26 8 No (0.69230769 0.30769231) *
19) MontoCuota=MuyBajo 67 0 Si (0.00000000 1.00000000) *
5) GradoAcademico=Licenciatura 1717 149 Si (0.08677927 0.91322073)
10) MontoCredito>=55398 316 107 Si (0.33860759 0.66139241)
20) MontoCuota=MuyBajo 23 4 No (0.82608696 0.17391304) *
21) MontoCuota=Alto,Bajo,Medio 293 88 Si (0.30034130 0.69965870)
42) CoefCreditoAvaluo=5,6,7,8,9,10,11,12 197 81 Si (0.41116751 0.58883249)
84) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9 57 14 No (0.75438596 0.24561404) *
85) CoefCreditoAvaluo=10,11,12 140 38 Si (0.27142857 0.72857143)
170) MontoCredito>=149374 40 20 No (0.50000000 0.50000000)
340) IngresoNeto=2 16 1 No (0.93750000 0.06250000) *
341) IngresoNeto=1 24 5 Si (0.20833333 0.79166667) *
171) MontoCredito< 149374 100 18 Si (0.18000000 0.82000000) *
43) CoefCreditoAvaluo=1,2,3,4 96 7 Si (0.07291667 0.92708333) *
11) MontoCredito< 55398 1401 42 Si (0.02997859 0.97002141) *
3) CoefCreditoAvaluo=12 2118 131 Si (0.06185080 0.93814920)
6) GradoAcademico=Licenciatura 332 92 Si (0.27710843 0.72289157)
12) MontoCuota=Alto,MuyBajo 108 48 No (0.55555556 0.44444444)
24) IngresoNeto=1 81 21 No (0.74074074 0.25925926) *
25) IngresoNeto=2 27 0 Si (0.00000000 1.00000000) *
13) MontoCuota=Bajo,Medio 224 32 Si (0.14285714 0.85714286) *
7) GradoAcademico=Bachiller 1786 39 Si (0.02183651 0.97816349) *
Se genera la predicción
# Type="class" hace que el modelo prediga clases y no probabilidades
prediccion <- predict(modelo, ttesting, type ='class')
prediccion3275 4265 3831 3923 2306 2689 2408 2452 2429 1383 2856 2995 2993 3687 2213
Si Si Si Si No Si No No No Si Si Si Si Si Si
3622 4843 1338 1848 4240 1978 629 947 2301 226 2039 508 2555 4102 493
Si No Si No Si Si Si Si No Si Si Si Si Si Si
3322 304 2450 2548 561 78 2862 3749 4498 1959 885 998 2513 902 3880
Si Si No Si Si Si Si Si Si Si Si Si Si Si Si
153 3820 4757 4289 3042 3029 444 4391 2688 614 1594 3865 4458 1220 1248
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
3076 4671 935 939 558 3300 3062 763 3628 3774 4976 655 4360 3149 4788
Si Si Si Si Si Si Si Si Si Si No Si Si Si No
4921 1511 1774 4888 4798 640 4048 224 4923 4110 4900 4288 762 1758 1720
No Si Si No No Si Si Si No Si No Si Si Si Si
1124 876 2313 733 4386 4139 670 4567 2298 611 1118 692 1657 2033 3685
Si Si Si Si Si Si Si Si No Si Si No Si Si Si
4984 4436 1705 1786 1969 4606 1095 3243 1840 4135 1690 3200 4517 4916 4327
No Si Si Si Si Si Si Si Si Si Si Si Si No Si
249 43 1039 4411 1612 46 333 3131 4650 1040 1346 1633 1787 3025 1532
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
875 2705 4637 4792 3151 718 683 4488 4134 1814 4747 3373 3939 3803 3311
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
2969 144 166 4302 1395 4236 666 1289 4756 4457 1661 2101 3744 672 1238
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
4132 3370 2362 243 4128 77 2492 2278 3447 4453 2666 1648 3231 4728 2796
Si Si Si Si Si Si Si No Si Si Si Si Si No Si
1199 2281 2186 4823 296 3298 2553 2771 4915 3724 1283 3272 4625 952 3196
Si No No Si Si Si Si Si No Si Si Si Si Si Si
3216 3462 2710 480 1745 2987 3964 2176 20 1211 754 895 4629 1864 2913
Si Si Si Si Si Si Si No Si Si Si Si Si Si Si
1243 4541 4549 958 2732 1867 4569 3955 3481 1704 2157 2074 2389 3452 3317
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
191 33 3797 519 4447 1626 4936 3697 1067 4116 3657 4452 3659 2392 1916
Si Si Si Si No Si No Si Si Si Si Si Si Si Si
1341 138 3522 2696 3178 3836 3508 4301 3560 2582 1429 4858 331 3597 2268
Si Si Si Si Si Si Si Si Si Si Si No Si Si No
1069 2762 2179 2001 4277 626 527 3661 4893 3548 591 1669 2290 2216 4744
Si Si No Si Si Si Si Si No Si Si Si No No No
4911 1217 4705 963 4087 731 1862 2989 361 4922 4929 3293 4474 968 3469
Si Si No Si Si Si Si Si No No Si Si Si Si Si
1407 2715 4697 1954 88 2939 2344 2068 3226 1251 1974 1904 3507 3616 2061
Si Si No Si Si Si No Si Si Si Si Si Si Si Si
781 4924 3625 1590 2793 231 2703 3614 794 1619 1543 317 541 3410 1739
Si No Si Si Si No Si Si Si Si Si Si Si Si Si
1073 843 1226 3262 848 3337 2167 4103 3457 3465 2499 1599 1046 1518 2090
Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
526 4595 4676 916 1331 571 2891 1091 4591 1838 2843 2308 3570 178 1154
Si Si Si Si Si Si Si Si Si Si Si No Si Si No
4290 983 3892 3887 3493 1398 3186 577 560 658 2296 3172 4184 3600 536
Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
1068 2370 3759 1549 3012 2661 1412 489 3653 993 3984 4032 386 4878 4067
Si No Si Si Si Si Si Si Si Si Si Si Si No Si
4975 917 4886 1578 4217 1342 3534 4153 1556 623 2737 2328 227 323 167
No Si No Si Si Si Si Si Si No Si No Si Si Si
4441 3847 1707 3372 2169 777 2045 3771 4060 3641 3532 2234 3902 4509 4420
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
4573 2104 2189 4414 1955 1434 373 2921 586 1700 4098 2418 752 4133 4464
Si Si No Si Si Si Si Si Si Si Si Si Si Si Si
3007 3233 1102 3911 4151 944 2443 3444 370 3069 4968 569 1951 2382 4450
Si Si Si Si Si Si No Si Si Si Si Si Si No Si
2655 740 4663 2884 700 2923 1801 336 1426 2763 3874 4364 3107 3987 2861
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
495 3052 4142 2681 3805 3737 4088 1548 3583 1573 3009 1144 4931 15 4636
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
3281 3857 1944 3308 3947 338 894 981 4587 441 4257 1397 3150 1778 244
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
4542 1783 1470 610 3241 2006 4220 4227 3229 3106 2080 3592 4751 1305 3234
Si Si Si Si Si Si Si Si Si Si Si Si No Si Si
1807 2527 2516 2126 4019 4793 2650 1933 3475 2824 3341 2133 2917 4589 1780
Si Si Si Si Si No Si Si Si Si Si Si Si Si Si
204 3773 1819 1088 2129 377 4113 4995 4709 4651 2315 2019 3755 4291 3031
Si Si Si Si Si Si Si Si No Si No Si Si Si Si
474 3136 3484 2336 1620 2145 3956 2857 1560 438 2324 980 766 213 2637
Si Si Si No Si Si Si Si Si Si No Si Si Si Si
2809 3717 4090 972 2808 2740 1521 1952 4256 1895 3985 716 2782 4208 2217
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
2173 2472 3496 1159 3066 4539 4059 3397 3117 48 318 3768 4095 106 884
No No Si Si Si Si Si Si Si Si Si Si Si Si Si
2624 2674 903 1164 4355 948 1457 1869 3807 2952 3734 4496 3545 1887 3655
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
3051 3951 2338 99 3463 1469 4131 2587 3837 1775 1309 8 1610 4703 462
Si Si No Si Si Si Si Si Si Si Si Si Si No Si
3160 868 3942 3084 1020 2435 3347 1813 2972 3585 4177 2341 1404 974 4380
Si Si Si Si Si No Si Si Si Si Si No Si Si Si
608 792 262 258 1425 4129 3630 2645 1681 427 2742 4261 171 722 1528
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
1533 2670 1176 2684 4093 4384 2449 2192 4056 4241 2641 2388 4180 1170 3325
Si No Si Si Si Si No No Si Si Si No Si Si Si
3450 563 4483 4069 1945 4771 987 3876 3906 19 215 4395 4718 357 3110
Si Si Si Si Si No Si Si Si Si Si Si Si Si Si
933 139 1486 3394 4099 3468 1033 3711 4061 1847 1433 2941 4237 3726 2916
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
1687 2088 2100 4612 2873 1034 1876 3283 1215 4204 2250 3265 4043 4994 596
Si Si Si Si Si Si No Si Si Si No Si Si Si Si
4810 2518 3945 4506 421 2778 1438 1732 1575 3593 1029 2053 4693 2881 2886
No Si Si Si Si Si Si Si Si No Si Si No Si Si
4656 1145 4526 4584 2212 4174 3979 3296 149 1504 2806 3528 4246 4720 1011
Si No Si Si Si Si Si Si Si Si Si Si Si Si Si
1912 3486 3544 988 4831 3612 4092 132 1634 2460 4212 674 3005 3404 4200
Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
3624 2588 546 4981 1993 2029 3228 3358 2997 1747 4957 1600 2320 2356 154
Si Si Si No Si Si Si Si Si Si No Si No Si Si
Levels: No Si
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediccion
No Si
No 71 32
Si 12 635
Índices de calidad de la predicción
$`Matriz de Confusión`
prediccion
No Si
No 71 32
Si 12 635
$`Precisión Global`
[1] 0.9413333
$`Error Global`
[1] 0.05866667
$`Precisión por categoría`
No Si
0.6893204 0.9814529
Se cargan las librerías
Se genera el modelo
n= 4250
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 4250 602 Si (0.14164706 0.85835294)
2) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9,10,11 2132 471 Si (0.22091932 0.77908068)
4) GradoAcademico=Bachiller 415 93 No (0.77590361 0.22409639)
8) CoefCreditoAvaluo=4,5,6,7,8,9,10,11,12 322 18 No (0.94409938 0.05590062) *
9) CoefCreditoAvaluo=1,2,3 93 18 Si (0.19354839 0.80645161)
18) MontoCuota=Alto,Bajo,Medio 26 8 No (0.69230769 0.30769231) *
19) MontoCuota=MuyBajo 67 0 Si (0.00000000 1.00000000) *
5) GradoAcademico=Licenciatura 1717 149 Si (0.08677927 0.91322073)
10) MontoCredito>=55398 316 107 Si (0.33860759 0.66139241)
20) MontoCuota=MuyBajo 23 4 No (0.82608696 0.17391304) *
21) MontoCuota=Alto,Bajo,Medio 293 88 Si (0.30034130 0.69965870)
42) CoefCreditoAvaluo=5,6,7,8,9,10,11,12 197 81 Si (0.41116751 0.58883249)
84) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9 57 14 No (0.75438596 0.24561404) *
85) CoefCreditoAvaluo=10,11,12 140 38 Si (0.27142857 0.72857143)
170) MontoCredito>=149374 40 20 No (0.50000000 0.50000000)
340) IngresoNeto=2 16 1 No (0.93750000 0.06250000) *
341) IngresoNeto=1 24 5 Si (0.20833333 0.79166667) *
171) MontoCredito< 149374 100 18 Si (0.18000000 0.82000000) *
43) CoefCreditoAvaluo=1,2,3,4 96 7 Si (0.07291667 0.92708333) *
11) MontoCredito< 55398 1401 42 Si (0.02997859 0.97002141) *
3) CoefCreditoAvaluo=12 2118 131 Si (0.06185080 0.93814920)
6) GradoAcademico=Licenciatura 332 92 Si (0.27710843 0.72289157)
12) MontoCuota=Alto,MuyBajo 108 48 No (0.55555556 0.44444444)
24) IngresoNeto=1 81 21 No (0.74074074 0.25925926) *
25) IngresoNeto=2 27 0 Si (0.00000000 1.00000000) *
13) MontoCuota=Bajo,Medio 224 32 Si (0.14285714 0.85714286) *
7) GradoAcademico=Bachiller 1786 39 Si (0.02183651 0.97816349) *
Se genera la predicción
[1] Si Si Si Si No Si No No No Si Si Si Si Si Si Si No Si No Si Si Si Si
[24] No Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si
[47] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[70] Si No Si Si Si No No Si Si No No Si Si Si No Si No Si Si Si Si Si Si
[93] Si Si Si Si Si Si No Si Si No Si Si Si No Si Si Si Si Si Si Si Si Si
[116] Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[139] No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[162] Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si No Si Si No No Si
[185] Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
[208] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No
[231] Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si
[254] Si No Si Si No Si Si Si Si Si No Si Si Si No No No Si Si No Si Si Si
[277] Si Si No No Si Si Si Si Si Si Si No Si Si Si No Si Si Si Si Si Si Si
[300] Si Si No Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[323] Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si No
[346] Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si No Si Si Si Si Si Si
[369] Si Si Si Si Si No Si No Si No Si Si Si Si Si Si No Si No Si Si Si Si
[392] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si
[415] Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si No Si Si Si
[438] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si
[461] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[484] Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si No Si Si Si Si Si
[507] Si Si Si Si Si Si Si Si Si Si Si Si No Si No Si Si Si Si Si Si Si No
[530] Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[553] Si Si Si No No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[576] Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
[599] No Si Si Si Si Si Si No Si Si Si Si Si No Si Si Si Si Si Si Si Si Si
[622] Si Si Si Si Si Si Si Si Si Si No Si Si Si Si No No Si Si Si No Si Si
[645] Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[668] Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si No Si Si Si Si
[691] No Si Si Si Si Si Si Si Si No Si Si No Si Si Si No Si Si Si Si Si Si
[714] Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
[737] Si Si No Si Si Si Si Si Si No Si No Si Si
Levels: No Si
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediction
real No Si
No 71 32
Si 12 635
Índices de calidad de la predicción
Confusion Matrix:
prediction
real No Si
No 71 32
Si 12 635
Overall Accuracy: 0.9413
Overall Error: 0.0587
Category Accuracy:
No Si
0.689320 0.981453
Podemos omitir crear la matriz de confusión
Confusion Matrix:
prediction
real No Si
No 71 32
Si 12 635
Overall Accuracy: 0.9413
Overall Error: 0.0587
Category Accuracy:
No Si
0.689320 0.981453
Utilizando los datos que previamente cargamos
Podemos visualizar la distribución de las variables numéricas y categóricas según la variable a predecir.
Utilizando los mismo datos para prueba (ttesting) y aprendizaje (taprendizaje) que creamos anteriormente.
Se cargan las librerías
Se genera el modelo
modelo <- rpart(BuenPagador~CoefCreditoAvaluo+MontoCuota+GradoAcademico, data = taprendizaje, minsplit = 2)
modelon= 4250
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 4250 602 Si (0.14164706 0.85835294)
2) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9,10,11 2132 471 Si (0.22091932 0.77908068)
4) GradoAcademico=Bachiller 415 93 No (0.77590361 0.22409639)
8) CoefCreditoAvaluo=4,5,6,7,8,9,10,11,12 322 18 No (0.94409938 0.05590062) *
9) CoefCreditoAvaluo=1,2,3 93 18 Si (0.19354839 0.80645161)
18) MontoCuota=Alto,Bajo,Medio 26 8 No (0.69230769 0.30769231) *
19) MontoCuota=MuyBajo 67 0 Si (0.00000000 1.00000000) *
5) GradoAcademico=Licenciatura 1717 149 Si (0.08677927 0.91322073) *
3) CoefCreditoAvaluo=12 2118 131 Si (0.06185080 0.93814920) *
Se genera la predicción
# Type="class" hace que el modelo prediga clases y no probabilidades
prediccion <- predict(modelo, ttesting, type ='class')
prediccion3275 4265 3831 3923 2306 2689 2408 2452 2429 1383 2856 2995 2993 3687 2213
Si Si Si Si No Si No No Si Si Si Si Si Si Si
3622 4843 1338 1848 4240 1978 629 947 2301 226 2039 508 2555 4102 493
Si No Si Si Si Si Si Si No Si Si Si Si Si Si
3322 304 2450 2548 561 78 2862 3749 4498 1959 885 998 2513 902 3880
Si Si No Si Si Si Si Si Si Si Si Si Si Si Si
153 3820 4757 4289 3042 3029 444 4391 2688 614 1594 3865 4458 1220 1248
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
3076 4671 935 939 558 3300 3062 763 3628 3774 4976 655 4360 3149 4788
Si Si Si Si Si Si Si Si Si Si Si Si Si Si No
4921 1511 1774 4888 4798 640 4048 224 4923 4110 4900 4288 762 1758 1720
No Si Si No No Si Si Si No Si Si Si Si Si Si
1124 876 2313 733 4386 4139 670 4567 2298 611 1118 692 1657 2033 3685
Si Si Si Si Si Si Si Si No Si Si Si Si Si Si
4984 4436 1705 1786 1969 4606 1095 3243 1840 4135 1690 3200 4517 4916 4327
No Si Si Si Si Si Si Si Si Si Si Si Si No Si
249 43 1039 4411 1612 46 333 3131 4650 1040 1346 1633 1787 3025 1532
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
875 2705 4637 4792 3151 718 683 4488 4134 1814 4747 3373 3939 3803 3311
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
2969 144 166 4302 1395 4236 666 1289 4756 4457 1661 2101 3744 672 1238
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
4132 3370 2362 243 4128 77 2492 2278 3447 4453 2666 1648 3231 4728 2796
Si Si Si Si Si Si Si No Si Si Si Si Si No Si
1199 2281 2186 4823 296 3298 2553 2771 4915 3724 1283 3272 4625 952 3196
Si No No Si Si Si Si Si No Si Si Si Si Si Si
3216 3462 2710 480 1745 2987 3964 2176 20 1211 754 895 4629 1864 2913
Si Si Si Si Si Si Si No Si Si Si Si Si Si Si
1243 4541 4549 958 2732 1867 4569 3955 3481 1704 2157 2074 2389 3452 3317
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
191 33 3797 519 4447 1626 4936 3697 1067 4116 3657 4452 3659 2392 1916
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
1341 138 3522 2696 3178 3836 3508 4301 3560 2582 1429 4858 331 3597 2268
Si Si Si Si Si Si Si Si Si Si Si No Si Si No
1069 2762 2179 2001 4277 626 527 3661 4893 3548 591 1669 2290 2216 4744
Si Si No Si Si Si Si Si No Si Si Si No No No
4911 1217 4705 963 4087 731 1862 2989 361 4922 4929 3293 4474 968 3469
Si Si No Si Si Si Si Si Si No Si Si Si Si Si
1407 2715 4697 1954 88 2939 2344 2068 3226 1251 1974 1904 3507 3616 2061
Si Si No Si Si Si No Si Si Si Si Si Si Si Si
781 4924 3625 1590 2793 231 2703 3614 794 1619 1543 317 541 3410 1739
Si No Si Si Si Si Si Si Si Si Si Si Si Si Si
1073 843 1226 3262 848 3337 2167 4103 3457 3465 2499 1599 1046 1518 2090
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
526 4595 4676 916 1331 571 2891 1091 4591 1838 2843 2308 3570 178 1154
Si Si Si Si Si Si Si Si Si Si Si No Si Si No
4290 983 3892 3887 3493 1398 3186 577 560 658 2296 3172 4184 3600 536
Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
1068 2370 3759 1549 3012 2661 1412 489 3653 993 3984 4032 386 4878 4067
Si No Si Si Si Si Si Si Si Si Si Si Si No Si
4975 917 4886 1578 4217 1342 3534 4153 1556 623 2737 2328 227 323 167
Si Si No Si Si Si Si Si Si No Si No Si Si Si
4441 3847 1707 3372 2169 777 2045 3771 4060 3641 3532 2234 3902 4509 4420
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
4573 2104 2189 4414 1955 1434 373 2921 586 1700 4098 2418 752 4133 4464
Si Si No Si Si Si Si Si Si Si Si Si Si Si Si
3007 3233 1102 3911 4151 944 2443 3444 370 3069 4968 569 1951 2382 4450
Si Si Si Si Si Si No Si Si Si Si Si Si Si Si
2655 740 4663 2884 700 2923 1801 336 1426 2763 3874 4364 3107 3987 2861
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
495 3052 4142 2681 3805 3737 4088 1548 3583 1573 3009 1144 4931 15 4636
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
3281 3857 1944 3308 3947 338 894 981 4587 441 4257 1397 3150 1778 244
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
4542 1783 1470 610 3241 2006 4220 4227 3229 3106 2080 3592 4751 1305 3234
Si Si Si Si Si Si Si Si Si Si Si Si No Si Si
1807 2527 2516 2126 4019 4793 2650 1933 3475 2824 3341 2133 2917 4589 1780
Si Si Si Si Si No Si Si Si Si Si Si Si Si Si
204 3773 1819 1088 2129 377 4113 4995 4709 4651 2315 2019 3755 4291 3031
Si Si Si Si Si Si Si Si No Si No Si Si Si Si
474 3136 3484 2336 1620 2145 3956 2857 1560 438 2324 980 766 213 2637
Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
2809 3717 4090 972 2808 2740 1521 1952 4256 1895 3985 716 2782 4208 2217
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
2173 2472 3496 1159 3066 4539 4059 3397 3117 48 318 3768 4095 106 884
No Si Si Si Si Si Si Si Si Si Si Si Si Si Si
2624 2674 903 1164 4355 948 1457 1869 3807 2952 3734 4496 3545 1887 3655
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
3051 3951 2338 99 3463 1469 4131 2587 3837 1775 1309 8 1610 4703 462
Si Si No Si Si Si Si Si Si Si Si Si Si No Si
3160 868 3942 3084 1020 2435 3347 1813 2972 3585 4177 2341 1404 974 4380
Si Si Si Si Si Si Si Si Si Si Si No Si Si Si
608 792 262 258 1425 4129 3630 2645 1681 427 2742 4261 171 722 1528
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
1533 2670 1176 2684 4093 4384 2449 2192 4056 4241 2641 2388 4180 1170 3325
Si No Si Si Si Si No No Si Si Si Si Si Si Si
3450 563 4483 4069 1945 4771 987 3876 3906 19 215 4395 4718 357 3110
Si Si Si Si Si No Si Si Si Si Si Si Si Si Si
933 139 1486 3394 4099 3468 1033 3711 4061 1847 1433 2941 4237 3726 2916
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
1687 2088 2100 4612 2873 1034 1876 3283 1215 4204 2250 3265 4043 4994 596
Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
4810 2518 3945 4506 421 2778 1438 1732 1575 3593 1029 2053 4693 2881 2886
No Si Si Si Si Si Si Si Si Si Si Si Si Si Si
4656 1145 4526 4584 2212 4174 3979 3296 149 1504 2806 3528 4246 4720 1011
Si No Si Si Si Si Si Si Si Si Si Si Si Si Si
1912 3486 3544 988 4831 3612 4092 132 1634 2460 4212 674 3005 3404 4200
Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
3624 2588 546 4981 1993 2029 3228 3358 2997 1747 4957 1600 2320 2356 154
Si Si Si Si Si Si Si Si Si Si No Si No Si Si
Levels: No Si
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediccion
No Si
No 57 46
Si 5 642
Índices de calidad de la predicción
$`Matriz de Confusión`
prediccion
No Si
No 57 46
Si 5 642
$`Precisión Global`
[1] 0.932
$`Error Global`
[1] 0.068
$`Precisión por categoría`
No Si
0.5533981 0.9922720
Se cargan las librerías
Se genera el modelo
modelo <- train.rpart(BuenPagador~CoefCreditoAvaluo+MontoCuota+GradoAcademico, data = taprendizaje, minsplit = 2)
modelon= 4250
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 4250 602 Si (0.14164706 0.85835294)
2) CoefCreditoAvaluo=1,2,3,4,5,6,7,8,9,10,11 2132 471 Si (0.22091932 0.77908068)
4) GradoAcademico=Bachiller 415 93 No (0.77590361 0.22409639)
8) CoefCreditoAvaluo=4,5,6,7,8,9,10,11,12 322 18 No (0.94409938 0.05590062) *
9) CoefCreditoAvaluo=1,2,3 93 18 Si (0.19354839 0.80645161)
18) MontoCuota=Alto,Bajo,Medio 26 8 No (0.69230769 0.30769231) *
19) MontoCuota=MuyBajo 67 0 Si (0.00000000 1.00000000) *
5) GradoAcademico=Licenciatura 1717 149 Si (0.08677927 0.91322073) *
3) CoefCreditoAvaluo=12 2118 131 Si (0.06185080 0.93814920) *
Se genera la predicción
[1] Si Si Si Si No Si No No Si Si Si Si Si Si Si Si No Si Si Si Si Si Si
[24] No Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si
[47] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[70] Si Si Si Si Si No No Si Si No No Si Si Si No Si Si Si Si Si Si Si Si
[93] Si Si Si Si Si Si No Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si
[116] Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[139] No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[162] Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si No Si Si No No Si
[185] Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si
[208] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[231] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si
[254] Si No Si Si No Si Si Si Si Si No Si Si Si No No No Si Si No Si Si Si
[277] Si Si Si No Si Si Si Si Si Si Si No Si Si Si No Si Si Si Si Si Si Si
[300] Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[323] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si No
[346] Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si No Si Si Si Si Si Si
[369] Si Si Si Si Si No Si Si Si No Si Si Si Si Si Si No Si No Si Si Si Si
[392] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si
[415] Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
[438] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si
[461] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[484] Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si No Si Si Si Si Si
[507] Si Si Si Si Si Si Si Si Si Si Si Si No Si No Si Si Si Si Si Si Si No
[530] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[553] Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[576] Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si
[599] No Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si
[622] Si Si Si Si Si Si Si Si Si Si No Si Si Si Si No No Si Si Si Si Si Si
[645] Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[668] Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si
[691] No Si Si Si Si Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si
[714] Si Si Si Si Si Si Si Si Si Si Si No Si Si Si Si Si Si Si Si Si Si Si
[737] Si Si Si Si Si Si Si Si Si No Si No Si Si
Levels: No Si
Podemos graficar el árbol de decisión
prp(modelo, extra = 104, branch.type = 2,
box.col = c("pink", "palegreen3", "cyan")[modelo$frame$yval])Se genera la matriz de confusión
prediction
real No Si
No 57 46
Si 5 642
Índices de calidad de la predicción
Confusion Matrix:
prediction
real No Si
No 57 46
Si 5 642
Overall Accuracy: 0.9320
Overall Error: 0.0680
Category Accuracy:
No Si
0.553398 0.992272
Podemos omitir crear la matriz de confusión
Confusion Matrix:
prediction
real No Si
No 57 46
Si 5 642
Overall Accuracy: 0.9320
Overall Error: 0.0680
Category Accuracy:
No Si
0.553398 0.992272